package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootCupbf;
import org.footballmanager.pandafootball.system.form.impl.FootCupbfSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootCupbfService extends BaseService<FootCupbf> {
    /**
     * 确认杯赛报分信息
     *
     * @param bf      报分实体类
     * @param request 请求
     */
    void makesure(FootCupbf bf, HttpServletRequest request);

    /**
     * 根据次数和杯赛类型添加报分记录到数据库
     *
     * @param times   次数
     * @param type    类型
     * @param request 请求
     */
    void createBf(int times, boolean type, HttpServletRequest request);

    /**
     * 根据用户主键查找杯赛报分信息
     *
     * @param userId 用户主键
     * @return 杯赛报分信息
     */
    FootCupbf findCupbfByUserId(Long userId);

    /**
     * 根据次数，赛季和比赛类型找报分记录
     *
     * @param times 次数
     * @param sjId  赛季主键
     * @param type  类型
     * @return 报分记录列表
     */
    List<FootCupbf> findBf(String times, Long sjId, boolean type);

    /**
     * 查找第一场已报分的记录
     *
     * @param userId 用户主键
     * @return 报分记录
     */
    FootCupbf findFirstBfResult(Long userId);

    /**
     * 查找可以确认报分的信息
     *
     * @param userId 用户主键
     * @return 报分记录
     */
    FootCupbf findMakesureBfByUserid(Long userId);

    /**
     * 立即晋级
     *
     * @param bf      报分实体类
     * @param times   次数
     * @param request 请求
     */
    void atOnceIn(FootCupbf bf, int times, HttpServletRequest request);

    /**
     * 立即晋级
     *
     * @param bf      报分实体类
     * @param request 请求
     */
    void atOnceIn(FootCupbf bf, HttpServletRequest request);

    /**
     * 翻页方法
     *
     * @param footCupbfSearchForm 条件
     * @return 列表
     */
    List<FootCupbf> findall(FootCupbfSearchForm footCupbfSearchForm);

    /**
     * 查询
     *
     * @param entityname          实体类名
     * @param map                 参数
     * @param footCupbfSearchForm 条件
     */
    void search(String entityname, Model map, FootCupbfSearchForm footCupbfSearchForm);

    /**
     * 删除所有
     *
     * @param footCupbfSearchForm 条件
     * @param request             请求
     */
    void deleteAll(FootCupbfSearchForm footCupbfSearchForm, HttpServletRequest request);

}